﻿/*
 * Script: "mapa_consultar_metrobus.js"
 * Copyright 2011 SISVOX.
 *
 * Licenciado bajo SISVOX, Version 1.0 (la "Licencia");
 * El codigo presente que compone este Software es propiedad unica y
 * exclusivamente de SISVOX, por lo tanto, usted no podrá utilizar este
 * archivo excepto en cumplimiento de la Licencia ofrecida por SISVOX.
 * Usted puede obtener una copia de la Licencia en:
 *
 *      Soluciones Integrales de Software Vox (SISVOX)
 *                 http://www.sisvox.com
 *
 *     - Carlos Calvo      <ccalvo@sisvox.com>
 *     - Andres Hernandez  <ahernandez@sisvox.com>
 *
 * A menos que sea requerido por la ley aplicable o se acuerde por escrito,
 * el software distribuido bajo la licencia se distribuye "TAL CUAL", CON
 * LAS GARANTIAS Y CONDICIONES expresadas en la "Licencia".
 */
 
 
// Variables donde se guardan los datos de los resultados a mostrar

//var map				= null;
var icono 			= null;
var infoBubbleTurnob 		= null;

var ruta_coord_x 			= null;
var ruta_coord_y 			= null;
var ruta_zoom 				= null;

var lista_id_linea_bus		= null;
var lista_nro_linea_bus		= null;
var lista_id_estacion_bus	= null;
var lista_id_tipo_rut_bus	= null;
var lista_nombre_bus		= null;
var lista_unidades_bus		= null;
var lista_distancia_bus		= null;
var ruta_nro_linea 			= new Array();
var ruta_id_estacion		= new Array();
var ruta_id_tipo_rut 		= new Array();
var ruta_nombre				= new Array();
var ruta_unidades			= new Array();
var ruta_distancia 			= new Array();

var lista_ruta_coord_x 		= null;
var lista_ruta_coord_y 		= null;
var lista_ruta_parada 		= null;

var lista_parada_id 		= null;
var lista_parada_coord_x 	= null;
var lista_parada_coord_y 	= null;
var lista_parada_nombre 	= null;
var lista_parada_id_linea 	= null;
var lista_parada_techada 	= null;
var lista_parada_discapa 	= null;
var parada_coord_x 			= new Array();
var parada_coord_y 			= new Array();
var parada_nombre 			= new Array();
var parada_id_linea			= new Array();
var parada_techada 			= new Array();
var parada_discapa 			= new Array();


// Creamos los Iconos del Marcador
var icono_green = "../../publico/imagenes/mapa/greenCircle.png";		// Inicio de la RUTA
var greenIcon = new google.maps.MarkerImage( icono_green,
	new google.maps.Size( 16, 16 ),
	new google.maps.Point( 0, 0 ),
	new google.maps.Point( 8, 8 ));

var icono_parada = "../../publico/imagenes/mapa/parada.png";			// PARADA
var parada = new google.maps.MarkerImage( icono_parada,
	new google.maps.Size( 16, 16 ),
	new google.maps.Point( 0, 0 ),
	new google.maps.Point( 8, 8 ));

var icono_red = "../../publico/imagenes/mapa/redCircle.png";			// Fin de la Ruta
var redIcon = new google.maps.MarkerImage( icono_red,
	new google.maps.Size( 16, 16 ),
	new google.maps.Point( 0, 0 ),
	new google.maps.Point( 8, 8 ));


// =================================================================================================================
// ============================== MAPA DE CONSULTA DE RUTA DE LA LINEA DE AUTOBUSES ================================
// =================================================================================================================

function mapa_consultar_metrobus( overviewMap ) {					
	
	// Inicializamos los Datos a mostrar
	inicializar_datos_metrobus();
	/*
	// Creamos el Mapa
	var centerPoint = new google.maps.LatLng( parseFloat(ruta_coord_x).toFixed(8), parseFloat(ruta_coord_y).toFixed(8) );
	var myOptions = {
		zoom: parseInt(ruta_zoom),
		zoomControlOptions: {
			style: google.maps.ZoomControlStyle.LARGE
		},
		center: centerPoint,
		panControl: true,
		mapTypeControl: false,
		scaleControl: true,
		streetViewControl: false,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		overviewMapControl: overviewMap,
		overviewMapControlOptions: {
    		opened: overviewMap
  		}
	} 
	map = new google.maps.Map(document.getElementById("map"), myOptions);
	*/
	// Pintamos la Ruta
	pintar_ruta();
	
	// Pintamos las Paradas
	pintar_paradas();
}


// =================================================================================================================
// ======================================== INICIALIZAR LOS DATOS DEL MAPA =========================================
// =================================================================================================================

function inicializar_datos_metrobus() {
	
	/*
	ruta_coord_x 				= document.getElementById("h_mapa_coord_x").value;
	ruta_coord_y 				= document.getElementById("h_mapa_coord_y").value;
	ruta_zoom 					= document.getElementById("h_mapa_zoom").value;
	*/
	
	
	var h_ls_id_linea_bus 		= document.getElementById("h_ls_id_linea_bus").value;
	lista_id_linea_bus 			= h_ls_id_linea_bus.split( "/*" );
	
	var h_ls_nro_linea_bus 		= document.getElementById("h_ls_nro_linea_bus").value;
	lista_nro_linea_bus 		= h_ls_nro_linea_bus.split( "/*" );
	
	var h_ls_id_estacion_bus 	= document.getElementById("h_ls_id_estacion_bus").value;
	lista_id_estacion_bus 		= h_ls_id_estacion_bus.split( "/*" );
	
	var h_ls_id_tipo_rut_bus 	= document.getElementById("h_ls_id_tipo_rut_bus").value;
	lista_id_tipo_rut_bus 		= h_ls_id_tipo_rut_bus.split( "/*" );
	
	var h_ls_nombre_bus 		= document.getElementById("h_ls_nombre_bus").value;
	lista_nombre_bus 			= h_ls_nombre_bus.split( "/*" );
	
	var h_ls_unidades_bus 		= document.getElementById("h_ls_unidades_bus").value;
	lista_unidades_bus 			= h_ls_unidades_bus.split( "/*" );
	
	var h_ls_distancia_bus 		= document.getElementById("h_ls_distancia_bus").value;
	lista_distancia_bus 		= h_ls_distancia_bus.split( "/*" );
	
	ruta_nro_linea 		= new Array();
	ruta_id_estacion	= new Array();
	ruta_id_tipo_rut 	= new Array();
	ruta_nombre 		= new Array();
	ruta_unidades 		= new Array();
	ruta_distancia 		= new Array();
	for ( i = 0; i < lista_id_linea_bus.length - 1; i++ ) {
		ruta_nro_linea[lista_id_linea_bus[i]] 	= lista_nro_linea_bus[i];
		ruta_id_estacion[lista_id_linea_bus[i]] = lista_id_estacion_bus[i];
		ruta_id_tipo_rut[lista_id_linea_bus[i]] = lista_id_tipo_rut_bus[i];
		ruta_nombre[lista_id_linea_bus[i]] 		= lista_nombre_bus[i];
		ruta_unidades[lista_id_linea_bus[i]] 	= lista_unidades_bus[i];
		ruta_distancia[lista_id_linea_bus[i]] 	= lista_distancia_bus[i];
	}
	
	var h_ls_ruta_coord_x 		= document.getElementById("h_ls_ruta_coord_x").value;
	lista_ruta_coord_x 			= h_ls_ruta_coord_x.split( "/*" );
	
	var h_ls_ruta_coord_y 		= document.getElementById("h_ls_ruta_coord_y").value;
	lista_ruta_coord_y 			= h_ls_ruta_coord_y.split( "/*" );
	
	var h_ls_ruta_parada 		= document.getElementById("h_ls_ruta_parada").value;
	lista_ruta_parada 			= h_ls_ruta_parada.split( "/*" );
	
	
	var h_ls_parada_id 			= document.getElementById("h_ls_parada_id").value;
	lista_parada_id 			= h_ls_parada_id.split( "/*" );
	
	var h_ls_parada_coord_x 	= document.getElementById("h_ls_parada_coord_x").value;
	lista_parada_coord_x 		= h_ls_parada_coord_x.split( "/*" );
	
	var h_ls_parada_coord_y 	= document.getElementById("h_ls_parada_coord_y").value;
	lista_parada_coord_y 		= h_ls_parada_coord_y.split( "/*" );
	
	var h_ls_parada_nombre 		= document.getElementById("h_ls_parada_nombre").value;
	lista_parada_nombre 		= h_ls_parada_nombre.split( "/*" );
	
	var h_ls_parada_id_linea 	= document.getElementById("h_ls_parada_id_linea").value;
	lista_parada_id_linea 		= h_ls_parada_id_linea.split( "/*" );
	
	var h_ls_parada_techada 	= document.getElementById("h_ls_parada_techada").value;
	lista_parada_techada 		= h_ls_parada_techada.split( "/*" );
	
	var h_ls_parada_discapa 	= document.getElementById("h_ls_parada_discapa").value;
	lista_parada_discapa 		= h_ls_parada_discapa.split( "/*" );
	
	parada_coord_x 	= new Array();
	parada_coord_y 	= new Array();
	parada_nombre	= new Array();
	parada_id_linea	= new Array();
	parada_techada 	= new Array();
	parada_discapa 	= new Array();
	for ( i = 0; i < lista_parada_id.length - 1; i++ ) {
		parada_coord_x[lista_parada_id[i]] 	= lista_parada_coord_x[i];
		parada_coord_y[lista_parada_id[i]] 	= lista_parada_coord_y[i];
		parada_nombre[lista_parada_id[i]] 	= lista_parada_nombre[i];
		parada_id_linea[lista_parada_id[i]] = lista_parada_id_linea[i];
		parada_techada[lista_parada_id[i]] 	= lista_parada_techada[i];
		parada_discapa[lista_parada_id[i]] 	= lista_parada_discapa[i];
	}
}


// =================================================================================================================
// ==================================== PINTA LA RUTA DE UNA LÍNEA DE AUTOBUSES ====================================
// =================================================================================================================

function pintar_ruta() {
	var points = new Array();
	
	for ( var i = 0; i < (lista_ruta_coord_x.length-1); i++ ) {
		// Obtenemos los atributos de cada Marcador
		var lat 			= parseFloat( lista_ruta_coord_x[i] ).toFixed(8);
		var lng 			= parseFloat( lista_ruta_coord_y[i] ).toFixed(8);											
		points[i] 			= new google.maps.LatLng( lat, lng );
	}
	
	var ruta = new google.maps.Polyline({ path: points, strokeColor: "#FF00FF", strokeOpacity: 1.0, strokeWeight: 2 });
	ruta.setMap(map);
}


// =================================================================================================================
// ================================== PINTA LAS PARADAS DE UNA LINEA DE AUTOBUSES ==================================
// =================================================================================================================

function pintar_paradas() {
	
	// Inicializamos los InfoBubbles
	var infowindow_div_datos_parada 		= document.getElementById('infowindow_div_datos_parada').innerHTML;
	var infowindow_div_datos_ruta			= document.getElementById('infowindow_div_datos_ruta').innerHTML;
	
	// Creamos los Iconos del Marcador
	var icono111 = "";
	
	for ( var j = 0; j < lista_ruta_parada.length; j++ ) {
		
		if ( lista_ruta_parada[j] != "" ) {
			// Obtenemos los atributos de cada Marcador
			var point 	= new google.maps.LatLng( parseFloat(parada_coord_x[lista_ruta_parada[j]]).toFixed(8), parseFloat(parada_coord_y[lista_ruta_parada[j]]).toFixed(8) );
			
			if ( j == 0 ) {
				icono 			= greenIcon;
				title 			= "Inicio de la Ruta: "
			} else if ( j == (lista_ruta_parada.length-2) ) {
				icono 			= redIcon;
				title 			= "Fin de la Ruta: "
			} else {
				icono 			= parada;
				title 			= "Parada: "
			}
			
			// Llenamos la Informacion del InfoWindow
			// Si el Tab es Parada
			html_tab1 	= infowindow_div_datos_parada;
			html_tab1	= html_tab1.replace("%%element.id_parada%%",			lista_ruta_parada[j]);
			html_tab1	= html_tab1.replace("%%element.parada_nombre%%",		parada_nombre[lista_ruta_parada[j]]);
			
			if ( parada_techada[lista_ruta_parada[j]] == "SI" ) {
				html_tab1 	= html_tab1.replace("%%element.parada_techada%%",	"SI   <img src='../../publico/imagenes/mapa/parada_techada.png' alt='Parada Techada'/>");
			} else {
				html_tab1 	= html_tab1.replace("%%element.parada_techada%%",	"NO");
			}
			
			if ( parada_discapa[lista_ruta_parada[j]] == "SI" ) {
				html_tab1 	= html_tab1.replace("%%element.parada_discapa%%",	"SI   <img src='../../publico/imagenes/mapa/acceso_discapacidad.png' alt='Acceso a Discapacitados'/>");
			} else {
				html_tab1 	= html_tab1.replace("%%element.parada_discapa%%",	"NO");
			}
			
			// Si el Tab es Ruta
			html_tab2 	= infowindow_div_datos_ruta;
			html_tab2 	= html_tab2.replace("%%element.id_linea%%",				ruta_nro_linea[parada_id_linea[lista_ruta_parada[j]]]);
			html_tab2 	= html_tab2.replace("%%element.nombre_ruta%%",			ruta_nombre[parada_id_linea[lista_ruta_parada[j]]]);
			html_tab2 	= html_tab2.replace("%%element.unidades%%",				ruta_unidades[parada_id_linea[lista_ruta_parada[j]]]);
			html_tab2 	= html_tab2.replace("%%element.distancia%%",			ruta_distancia[parada_id_linea[lista_ruta_parada[j]]]);
			
			
			// Configuramos el infoBubble
			var infoBubble = new InfoBubble({
				maxWidth: 300,
				minWidth: 300,
				maxHeight: 200,
				minHeight: 200,
				map: map,
				shadowStyle: 1,
				padding: 5,
				backgroundColor: '#FFFFFF',
				borderRadius: 15,
				arrowSize: 20,
				borderWidth: 2,
				borderColor: '#FF0000',
				disableAutoPan: false,
				hideCloseButton: false,
				arrowPosition: 50,
				arrowStyle: 0
			});
			
			// Agregamos los Tabs al InfoWindow
			infoBubble.addTab('Parada', 			html_tab1);
			infoBubble.addTab('Ruta', 				html_tab2);
			
			
			// Creamos el Marcador
			var marker = new google.maps.Marker({position: point, title: title+parada_nombre[lista_ruta_parada[j]], icon: icono, infoBubblez: infoBubble}); // , icon: icono, infoBubblez: infoBubble
			
			// Creamos el Evento
			google.maps.event.addListener(marker, "click", function () {
				if (!(this.infoBubblez).isOpen()) {
					if ( infoBubbleTurnob != null ) {
						infoBubbleTurnob.close();	
					}
					(this.infoBubblez).open(map, this);
					infoBubbleTurnob = this.infoBubblez;
				}
			});
			
			// Agregamos el Marcador al Mapa
			marker.setMap(map);
		}
	}
}